package easy

import (
	. "GoLeetcode/common"
	"math"
)

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */

/*
二叉搜索树:通过pre记录中序遍历时当前节点的前一个节点值

dfs(node.Left)
// 记录当前节点为pre,下一层递归到节点node时, pre就是node的前一个节点
pre = node.Val
dfs(node.Right)

*/
func getMinimumDifference(root *TreeNode) int {
	ans := math.MaxInt32
	pre := -1
	var dfs func(node *TreeNode)
	dfs = func(node *TreeNode) {
		if node == nil {
			return
		}
		dfs(node.Left)
		if pre != -1 && node.Val-pre < ans {
			ans = node.Val - pre
		}
		pre = node.Val
		dfs(node.Right)
	}
	dfs(root)
	return ans
}
